package com.atguigu.day21.morning;

/**
 * @version 1.0
 * @Author 马冰
 * @Date 2024/11/26 8:38
 * @注释 静态属性:有static修饰,在程序执行时只会执行一次,存放在方法区中,类名.属性调用,在类加载时创建,之后随着类卸载消失
 *      非静态属性:没有static修饰,创建一次对象执行一次,存放在堆中,对象名.属性调用,在创建对象时创建,在没有对象指向堆中被GC回收
 *      相同点:都有默认值,声明位置一致
 *
 *      final:修饰类时,类不能有子类,修饰方法时,方法不能被重写,修饰属性时,属性值不能被更改
 *      finally:无论如何都会被运行,想要不运行需要调用System.exit(0);
 *
 *      Set:接口实现类: HashSet ,   LinkedHashSet,      TreeSet
 *          存储特点:  哈希表         链表 哈希表         红黑树
 *                   无序,唯一      有序(添加)唯一      有序(排序顺序)唯一
 *
 *      什么是线程安全问题:多个线程操作共享数据,既有写也有读,数据前后不一致
 *
 *      如何解决: 同步代码块:synchronized(同步锁/同步监视器对象){}
 *               同步方法: public synchronized void aa(){}
 *                       public static synchronized void aa(){}
 *
 *      线程的生命周期:简单:新建->就绪->运行->死亡  中间有->阻塞
 *                   复杂:NEW->RUNNABLE->BLOCKED->WAITING->TIMED_WAITING->TERMINATED
 *
 *      sleep和wait的区别:sleep->不会释放锁,Thread.sleep,Thread.sleep(时间)时间到自动转为就绪状态
 *                       wait->释放锁,锁对象调用 锁对象.wait,wait(不写时间)->只能等notify()唤醒
 */
public class Morning {

}
